﻿using BBCode.Collections;

namespace BBCode.Nodes
{
    /// <summary>
    /// Interface used by Nodes that can have children
    /// </summary>
    public interface INestableNode : INode
    {
        /// <summary>
        /// Gets or sets the children.
        /// </summary>
        /// <value>
        /// The children.
        /// </value>
        NodeCollection Children { get; set; }

        /// <summary>
        /// Gets a value indicating whether this instance has children.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance has children; otherwise, <c>false</c>.
        /// </value>
        bool HasChildren { get; }

        /// <summary>
        /// Gets the inner text.
        /// </summary>
        string InnerText { get; }

        /// <summary>
        /// Gets the opening.
        /// </summary>
        string Opening { get; }

        /// <summary>
        /// Gets the closing.
        /// </summary>
        string Closing { get; }
    }
}